例3.3成绩排序
题目：输入任意（用户，成绩）序列，可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例：
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩
peter     96
jack      70
Tom       70
smith     67

从低到高
smith     67
jack      70
Tom      70
peter     96

输入描述：
注意一个case里面有多组样例，请用循环处理输入 输入多行，先输入要排序的人的个数，
然后输入排序方法0（降序）或者1（升序）再分别输入他们的名字和成绩，以一个空格隔开。
输出描述：
按照指定方式输出名字和成绩，名字和成绩之间以一个空格隔开
示例1
输入：
3
0
fang 90
yang 50
ning 70

输出：
fang 90
ning 70
yang 50

示例2
输入：
3
1
fang 90
yang 50
ning 70
3
0
moolgouua 43
aebjag 87
b 67

输出：
yang 50
ning 70
fang 90
aebjag 87
b 67
moolgouua 43

说明：
第一组用例:
3
1
fang 90
yang 50
ning 70
升序排序为：
yang 50
ning 70
fang 90
第二组降序为:
aebjag 87
b 67
moolgouua 43 

//有人方法为，结构体中添加num，随数据加入依次变大，score相等则比较num
//本人方法
#include<bits/stdc++.h>

using namespace std;

typedef struct{
    char name[100]={0};
    int score;
}stu;
int cmp1(stu s,stu s1)//升序
{
    return s.score<s1.score;
}

int cmp2(stu s,stu s1)//降序
{
    return s.score>s1.score;
}
int main()
{
    int n,flag;
    while(scanf("%d%d",&n,&flag)!=EOF)
    {
        stu s[n];
        for(int i=0;i<n;i++)
        {
            scanf("%s%d",s[i].name,&s[i].score);
        }
        if(flag==1)
        {
            stable_sort(s,s+n,cmp1);
        }else
        {
            stable_sort(s,s+n,cmp2);
        }
        for(int i=0;i<n;i++)
        {
            printf("%s %d\n",s[i].name,s[i].score);
        }
    }
    return 0;
}

